Computer systems typically comprise a combination of computer programs and hardware, such as semiconductors, transistors, chips, circuit boards, cards, storage devices, and processors, which are referred to as resources. The computer programs are stored in the storage devices and are executed by the processors.
Some computer systems support parallel processing. From a hardware standpoint, computers increasingly rely on multiple microprocessors to provide increased workload capacity. From a program standpoint, multithreaded operating systems and kernels have been developed, which permit computer programs to concurrently execute in multiple threads, so that multiple tasks can essentially be performed at the same time. In addition, some computers implement the concepts of virtual machines or logical partitioning, where a single physical computer operates essentially like multiple and independent virtual computers, referred to as virtual machines or logical partitions, with the various resources in the physical computer (e.g., processors, memory, adapters, and input/output devices) allocated among the various virtual machines via a partition manager, or hypervisor. Each virtual machine may execute a separate operating system, and from the perspective of users and of the programs executing in the virtual machine, operates as a fully independent computer. Each virtual machine essentially competes with other virtual machines for the limited resources of the computer, and the needs of each virtual machine may change over time, so that the virtual machines may share the limited resources of the computer system.